package Day10;

import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
/**
 * 2021Java真题:左孩子右兄弟
 * https://www.lanqiao.cn/problems/1451/learning/
 */
public class Main1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        int n = scan.nextInt();
        List<Integer>[] g = new ArrayList[n + 1];
        for(int i = 1; i <= n; i++){
          g[i] = new ArrayList<>();
        }
        //将每个结点的子节点都放到一起
        for(int i = 2; i <= n; i++){
          int x = scan.nextInt();
          g[x].add(i);
        }
        System.out.println(dfs(1,g));
        scan.close();
    }

    public static int dfs(int x , List<Integer>[] g){
      int res = 0;
      //计算此时结点距离根结点的距离
      for(int y : g[x]){
        res = Math.max(res , dfs(y , g));
      }
      //最大高度为到根节点的距离加上子节点的个数
      return res + g[x].size();
    } 
}